home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Purity / Purity #22 (1994-01-19)(Diesel)(DE)[WB].zip / Purity #22 (1994-01-19)(Diesel)(DE)[WB].adf / PPPClone / PPPClone.p < prev    next >
Text File  |  1994-01-17  |  19KB  |  566 lines

  1. PROGRAM PPPClone; { V0.02 }
  2.  
  3. FROM Rogertools Uses RREQUEST;
  4. USES Intuition,Exec;
  5. {$INCL 'pp.lib','dos.lib'}
  6.  
  7. TYPE ImageFeld=ARRAY[1..18]OF LONG;
  8.      Strtyp=STRING[100];
  9.      STR11=STRING[12];
  10.  
  11. CONST SELFLAGS:=GADGHIMAGE+GADGIMAGE+SELECTED;
  12.       NORFLAGS:=GADGHIMAGE+GADGIMAGE;
  13.  
  14. VAR win:p_window;STATIC;
  15.     Image1,Image2:Image;STATIC;
  16.     ImageMapPtr1,ImageMapPtr2:^ImageFeld;STATIC;
  17.     MessagePtr1: p_IntuiMessage;STATIC;
  18.     aktgad:p_gadget;STATIC;
  19.     gespeichert,geladen,fehler,akt,ende:BOOLEAN;STATIC;
  20.     Textinfo2,textinfo4,textinfo21,textinfo22,textinfo23,
  21.     TextInfo24,TextInfo25:STRINGINFO;STATIC;
  22.     Buffer2,Buffer4,Buffer21,Buffer22,Buffer23,Buffer24,
  23.     Buffer25:STRTYP;STATIC;
  24.     it5,it6,it7,it8,it9,it10,it11,it12,it13,it14,
  25.     it15,it16,it17,it18,it19,it20,it21,it22,it23,it24:INTUITEXT;STATIC;
  26.     Flaenge,Claenge,err,ok:LONG;STATIC;
  27.     gads:ARRAY[1..28] OF GADGET;STATIC;
  28.     farbe,effizienz,Puffer,lauf:INTEGER;STATIC;
  29.     fhandle:BPTR;
  30.     Filestart,Crinfo:PTR;
  31.     pfad1,pfad2,datei1,datei2:STRING;STATIC;
  32.     inname,outname:strtyp;STATIC;
  33.  
  34. PROCEDURE meldung(was:STRTYP);
  35.  BEGIN
  36.   setwindowtitles(win,str(-1),was);
  37.  END;
  38.  
  39.  
  40. PROCEDURE umrandung(wo:p_window,c1,c2,x,y,b,h:INTEGER);
  41.  
  42.  TYPE umrandungstyp=ARRAY[0..9] OF INTEGER;
  43.  VAR Feld1,feld2:umrandungstyp;
  44.      border1,border2:BORDER;
  45.  
  46.  BEGIN
  47.   feld1:=umrandungstyp(1,1,1,h-2,0,h-1,0,0,b-2,0);
  48.   feld2:=umrandungstyp(b-2,h-2,b-2,1,b-1,0,b-1,h-1,1,h-1);
  49.   Border1:=Border(x,y,c1,0,0,5,^Feld1,^Border2);
  50.   Border2:=Border(x,y,c2,0,0,5,^Feld2,Nil);
  51.   drawborder(wo^.rport,^Border1,0,0);
  52.  END;
  53.  
  54. PROCEDURE gbord(wo:p_window,was:p_gadget);
  55.  BEGIN
  56.   umrandung(wo,2,1,was^.Leftedge,was^.Topedge,was^.Width,was^.height);
  57.  END;
  58.  
  59.  
  60. PROCEDURE stringumrandung(wo:p_window,c1,c2,x,y,b,h:WORD);
  61.  BEGIN
  62.   umrandung(wo,c1,c2,x,y,b,h);
  63.   umrandung(wo,c2,c1,x-2,y-1,b+4,h+2);
  64.  END;
  65.  
  66. PROCEDURE zeichnetext(c1,c2:SHORT,wo:p_window,x,y:INTEGER,text:strtyp);
  67.  VAR it1,it2:INTUITEXT;STATIC;
  68.  BEGIN
  69.   it1:=INTUITEXT(c1,0,JAM2,1,1,NIL,text,^it2);
  70.   it2:=INTUITEXT(c2,0,0,0,0,NIL,text,NIL );
  71.   PRINTITEXT(wo^.rport,^it1,x,y);
  72.  END;
  73.  
  74. PROCEDURE effizienzeinstellen;
  75.  BEGIN
  76.   IF (gads[14].flags AND SELECTED)<>0 THEN effizienz:=CRUN_FAST;
  77.   IF (gads[15].flags AND SELECTED)<>0 THEN effizienz:=CRUN_MEDIOCRE;
  78.   IF (gads[16].flags AND SELECTED)<>0 THEN effizienz:=CRUN_GOOD;
  79.   IF (gads[17].flags AND SELECTED)<>0 THEN effizienz:=CRUN_VERYGOOD;
  80.   IF (gads[18].flags AND SELECTED)<>0 THEN effizienz:=CRUN_BEST;
  81.  END;
  82.  
  83. PROCEDURE puffereinstellen;
  84.  BEGIN
  85.   IF (gads[19].flags AND SELECTED)<>0 THEN puffer:=SPEEDUP_BUFFLARGE;
  86.   IF (gads[20].flags AND SELECTED)<>0 THEN puffer:=SPEEDUP_BUFFMEDIUM;
  87.   IF (gads[21].flags AND SELECTED)<>0 THEN puffer:=SPEEDUP_BUFFSMALL;
  88.  END;
  89.  
  90. PROCEDURE FarbeEinstellen;
  91.  BEGIN
  92.   IF (gads[8].flags AND SELECTED)<>0 THEN farbe:=DECR_COL0;
  93.   IF (gads[9].flags AND SELECTED)<>0 THEN farbe:=DECR_COL1;
  94.   IF (gads[10].flags AND SELECTED)<>0 THEN farbe:=DECR_POINTER;
  95.   IF (gads[11].flags AND SELECTED)<>0 THEN farbe:=DECR_SCROLL;
  96.   IF (gads[12].flags AND SELECTED)<>0 THEN farbe:=DECR_NONE;
  97.  END;
  98.  
  99. PROCEDURE speicherdecrunchedfile;
  100.  VAR hilf:strtyp;
  101.  BEGIN
  102.   Fhandle:=DosOpen(buffer4,MODE_NEWFILE);
  103.   IF Fhandle<>0 THEN
  104.   BEGIN
  105.    err:=DosWrite(FHandle,FileStart,FLaenge);
  106.    ok:=DosClose(FHandle);
  107.   END;
  108.   Buffer24:=INTSTR(flaenge)+' Bytes';
  109.   refreshgadgets(^gads[24],win,NIL);
  110.   FreeMem(Filestart,Flaenge);
  111.   hilf:=' Datei gespeichert als '+buffer4;
  112.   meldung(hilf);
  113.  END;
  114.  
  115. Procedure decrunch;
  116.  VAR hilf:strtyp;
  117.      altpos,lang:LONG;
  118.  
  119.  BEGIN
  120.  {*** filelänge bestimmen ***}
  121.   Fhandle:=DosOpen(buffer2,MODE_OLDFILE);
  122.   IF Fhandle<>0 THEN
  123.   BEGIN
  124.    altpos:=_Seek(fhandle,0,OFFSET_END);
  125.    lang:=_Seek(fhandle,altpos,OFFSET_BEGINNING);
  126.    {** Filelänge ausgeben **}
  127.    Buffer23:=INTSTR(lang)+' Bytes';
  128.    refreshgadgets(^gads[23],win,NIL);
  129.    ok:=Dosclose(Fhandle);
  130.    FarbeEinstellen;
  131.    err:=ppLoadData(buffer2,farbe,0,^Filestart,^Flaenge,NIL);
  132.  
  133.    IF err=0 THEN speicherdecrunchedfile
  134.    ELSE
  135.     BEGIN
  136.      CASE err OF
  137.      -1: hilf:=' Fehler beim öffnen !';
  138.      -2: hilf:=' Fehler beim lesen !';
  139.      -3: hilf:=' Kein Speicher um File zu lesen !';
  140.      -4: hilf:=' File ist verschlüsselt !';
  141.      -5: hilf:=' Falsches Passwort !';
  142.      -6: hilf:=' Unbekannte Powerpackerversion !';
  143.      -7: hilf:=' File ist Leer !';
  144.      END;
  145.      hilf:='   Konnte nicht decrunchen !!!'+hilf;
  146.      meldung(hilf);
  147.     END;
  148.    END
  149.    ELSE meldung(' Fehler beim Öffnen des Files !');
  150.  END;
  151.  
  152. PROCEDURE speichern;
  153.  VAR hilf:strtyp;
  154.  BEGIN
  155.   Fhandle:=DosOpen(buffer4,MODE_NEWFILE);
  156.   IF Fhandle<>0 THEN
  157.    IF ppWriteDataHeader(Fhandle,effizienz,0,0) THEN
  158.     BEGIN
  159.      err:=DosWrite(FHandle,FileStart,CLaenge);
  160.      ok:=DosClose(FHandle);
  161.      IF err=CLaenge THEN
  162.      BEGIN
  163.       Free_Mem(LONG(Filestart),Flaenge+64);
  164.       Filestart:=NIL;
  165.       hilf:=' Datei gespeichert als '+buffer4;
  166.       meldung(hilf);
  167.      END
  168.      ELSE meldung(' FEHLER: Schreibfehler !!!');
  169.     END
  170.    ELSE meldung(' FEHLER: Schreibfehler !!!')
  171.   ELSE
  172.    BEGIN
  173.      Free_Mem(LONG(Filestart),Flaenge+64);
  174.      meldung(' FEHLER: Kann Zieldatei nicht öffnen !!!');
  175.     END;
  176.  END;
  177.  
  178. PROCEDURE crunch(fname:STRTYP);
  179.  BEGIN
  180.   puffereinstellen;
  181.   effizienzeinstellen;
  182.   Fhandle:=DosOpen(fname,MODE_OLDFILE);
  183.   IF Fhandle<>0 THEN
  184.   BEGIN
  185.    meldung(' Datei wird geladen');
  186.    Flaenge:=DosSeek(Fhandle,0,OFFSET_END);
  187.    Flaenge:=DosSeek(Fhandle,0,OFFSET_BEGINNING);
  188.    Buffer23:=INTSTR(Flaenge)+' Bytes';
  189.    refreshgadgets(^gads[23],win,NIL);
  190.    FileStart:=PTR(Alloc_Mem(Flaenge+64,0));
  191.    err:=DosRead(FHandle,FileStart,Flaenge);
  192.    ok:=DosClose(Fhandle);
  193.    IF err<>Flaenge THEN meldung(' FEHLER beim Lesen der Quelldatei !!!')
  194.    ELSE
  195.     BEGIN
  196.      CrInfo:=ppAllocCrunchInfo(effizienz,Puffer,NIL,NIL);
  197.      IF Crinfo=NIL THEN
  198.       meldung(' FEHLER: Nicht genug Speicher !!!')
  199.      ELSE
  200.       BEGIN
  201.        meldung(' Datei wird gecrunched !');
  202.        claenge:=ppCrunchBuffer(CrInfo,FileStart,Flaenge);
  203.        ppFreeCrunchinfo(CrInfo);
  204.        IF claenge=PP_BUFFEROVERFLOW THEN
  205.         BEGIN
  206.          meldung(' FEHLER: Puffer übergelaufen !!!');
  207.          Fehler:=TRUE;
  208.         END
  209.         ELSE
  210.         BEGIN
  211.          Fehler:=FALSE;
  212.          Buffer24:=INTSTR(claenge+8)+' Bytes';
  213.          refreshgadgets(^gads[24],win,NIL);
  214.          meldung(' Fertig gecrunched !');
  215.          speichern;
  216.         END;
  217.       END;
  218.     END;
  219.   END ELSE meldung(' FEHLER: Kann Quelldatei nicht öffnen !!!');
  220.  END;
  221.  
  222.  
  223. PROCEDURE p26;
  224.  BEGIN
  225.   inname:=buffer2;
  226.   IF (gads[5].flags AND SELECTED)<>0 THEN crunch(inname);
  227.   IF (gads[6].flags AND SELECTED)<>0 THEN decrunch;
  228. {  IF (gads[7].flags AND SELECTED)<>0 THEN recrunch;}
  229.  END;
  230.  
  231.  PROCEDURE p1;
  232.   BEGIN
  233.    IF (foundarp OR foundasl) THEN rrequest('Infile wählen',datei1,pfad1);
  234.    buffer2:=pfad1+datei1;
  235.    refreshgadgets(^gads[2],win,NIL);
  236.   END;
  237.  
  238.  PROCEDURE p3;
  239.   BEGIN
  240.    IF (foundarp OR foundasl) THEN rrequest('Outfile wählen',datei2,pfad2);
  241.    buffer4:=pfad2+datei2;
  242.    refreshgadgets(^gads[4],win,NIL);
  243.   END;
  244.  
  245. BEGIN
  246.  Openlib(PPbase,PPNAME,PPVERSION);
  247.  Win:=Open_Window(50,50,392,173,1,_CLOSEWINDOW+GADGETUP+GADGETDOWN,
  248.       WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE,
  249.       'PPPCLONE V0.02 © 4.12.1993 by Røgersøft',NIL,50,50,640,256);
  250.  zeichnetext(0,1,win,26,15,'Quelle:');
  251.  gads[1]:=Gadget(NIL,20,12,67,14,GADGHCOMP,RELVERIFY,
  252.                  $0001,NIL,NIL,NIL,0,NIL,1,NIL);
  253.  gbord(win,^gads[1]);
  254.  gads[2]:=Gadget(NIL,93,15,278,8,GADGHCOMP,RELVERIFY,
  255.                  STRGADGET,NIL,NIL,NIL,0,^Textinfo2,2,NIL);
  256.  stringumrandung(win,1,2,90,13,280,12);
  257.  Textinfo2:=Stringinfo(^Buffer2,NIL,0,100,0,0,0,0,0,0,NIL,0,NIL);
  258.  Buffer2:='';
  259.  
  260.  zeichnetext(0,1,win,26,29,' Ziel:');
  261.  gads[3]:=Gadget(NIL,20,26,67,14,GADGHCOMP,RELVERIFY,
  262.                  $0001,NIL,NIL,NIL,0,NIL,3,NIL);
  263.  gbord(win,^gads[3]);
  264.  
  265.  gads[4]:=Gadget(NIL,93,29,278,8,GADGHCOMP,RELVERIFY,
  266.                  STRGADGET,NIL,NIL,NIL,0,^Textinfo4,4,NIL);
  267.  stringumrandung(win,1,2,90,27,280,12);
  268.  Textinfo4:=Stringinfo(^Buffer4,NIL,0,100,0,0,0,0,0,0,NIL,0,NIL);
  269.  Buffer4:='';
  270.  
  271.  stringumrandung(win,2,1,13,48,102,40);
  272.  zeichnetext(1,2,win,20,43,' Option: ');
  273.  gads[5]:=GADGET(NIL,20,55,17,9,SELFLAGS,RELVERIFY+TOGGLESELECT,
  274.                  BOOLGADGET,^Image1,^Image2,^it5,0,NIL,5,NIL);
  275.  it5:=INTUITEXT(1,0,0,25,1,NIL,'Crunch',NIL);
  276.  gads[6]:=GADGET(NIL,20,65,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  277.                  BOOLGADGET,^Image1,^Image2,^it6,0,NIL,6,NIL);
  278.  it6:=INTUITEXT(1,0,0,25,1,NIL,'Decrunch',NIL);
  279.  gads[7]:=GADGET(NIL,20,75,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  280.                   BOOLGADGET,^Image1,^Image2,^it7,0,NIL,7,NIL);
  281.  it7:=INTUITEXT(1,0,0,25,1,NIL,'Recrunch',NIL);
  282.  
  283.  stringumrandung(win,2,1,124,48,124,60);
  284.  zeichnetext(1,2,win,130,43,' Farbe: ');
  285.  gads[8]:=GADGET(NIL,130,55,17,9,SELFLAGS,RELVERIFY+TOGGLESELECT,
  286.                   BOOLGADGET,^Image1,^Image2,^it8,0,NIL,8,NIL);
  287.  it8:=INTUITEXT(1,0,0,25,1,NIL,'Farbe 0',NIL);
  288.  gads[9]:=GADGET(NIL,130,65,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  289.                   BOOLGADGET,^Image1,^Image2,^it9,0,NIL,9,NIL);
  290.  it9:=INTUITEXT(1,0,0,25,1,NIL,'Farbe 1',NIL);
  291.  gads[10]:=GADGET(NIL,130,75,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  292.                   BOOLGADGET,^Image1,^Image2,^it10,0,NIL,10,NIL);
  293.  it10:=INTUITEXT(1,0,0,25,1,NIL,'Pointer',NIL);
  294.  gads[11]:=GADGET(NIL,130,85,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  295.                   BOOLGADGET,^Image1,^Image2,^it11,0,NIL,11,NIL);
  296.  it11:=INTUITEXT(1,0,0,25,1,NIL,'Scrollen',NIL);
  297.  gads[12]:=GADGET(NIL,130,95,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  298.                   BOOLGADGET,^Image1,^Image2,^it12,0,NIL,12,NIL);
  299.  it12:=INTUITEXT(1,0,0,25,1,NIL,'Ohne',NIL);
  300.  
  301.  gads[13]:=GADGET(NIL,130,105,{17}0,{9}0,NORFLAGS,RELVERIFY+TOGGLESELECT,
  302.                   BOOLGADGET,NIL{^Image1},NIL{^Image2},NIL{^it13},0,NIL,13,NIL);
  303. { it13:=INTUITEXT(1,0,0,25,1,NIL,'Ohne',NIL);}
  304.  
  305.  stringumrandung(win,2,1,257,48,124,60);
  306.  zeichnetext(1,2,win,262,43,' Effizienz: ');
  307.  gads[14]:=GADGET(NIL,262,55,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  308.                   BOOLGADGET,^Image1,^Image2,^it14,0,NIL,14,NIL);
  309.  it14:=INTUITEXT(1,0,0,25,1,NIL,'Schnell',NIL);
  310.  gads[15]:=GADGET(NIL,262,65,17,9,SELFLAGS,RELVERIFY+TOGGLESELECT,
  311.                  BOOLGADGET,^Image1,^Image2,^it15,0,NIL,15,NIL);
  312.  it15:=INTUITEXT(1,0,0,25,1,NIL,'Mittel',NIL);
  313.  gads[16]:=GADGET(NIL,262,75,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  314.                  BOOLGADGET,^Image1,^Image2,^it16,0,NIL,16,NIL);
  315.  it16:=INTUITEXT(1,0,0,25,1,NIL,'Gut',NIL);
  316.  gads[17]:=GADGET(NIL,262,85,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  317.                   BOOLGADGET,^Image1,^Image2,^it17,0,NIL,17,NIL);
  318.  it17:=INTUITEXT(1,0,0,25,1,NIL,'Sehr Gut',NIL);
  319.  gads[18]:=GADGET(NIL,262,95,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  320.                   BOOLGADGET,^Image1,^Image2,^it18,0,NIL,18,NIL);
  321.  it18:=INTUITEXT(1,0,0,25,1,NIL,'Am Besten',NIL);
  322.  
  323.  stringumrandung(win,2,1,13,98,102,40);
  324.  zeichnetext(1,2,win,20,93,' Puffer: ');
  325.  gads[19]:=GADGET(NIL,20,105,17,9,SELFLAGS,RELVERIFY+TOGGLESELECT,
  326.                   BOOLGADGET,^Image1,^Image2,^it19,0,NIL,19,NIL);
  327.  it19:=INTUITEXT(1,0,0,25,1,NIL,'Groß',NIL);
  328.  gads[20]:=GADGET(NIL,20,115,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  329.                   BOOLGADGET,^Image1,^Image2,^it20,0,NIL,20,NIL);
  330.  it20:=INTUITEXT(1,0,0,25,1,NIL,'Mittel',NIL);
  331.  gads[21]:=GADGET(NIL,20,125,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  332.                   BOOLGADGET,^Image1,^Image2,^it21,0,NIL,21,NIL);
  333.  it21:=INTUITEXT(1,0,0,25,1,NIL,'Klein',NIL);
  334.  
  335.  stringumrandung(win,2,1,124,117,124,21);
  336.  zeichnetext(1,2,win,130,113,' Speicher: ');
  337.  gads[22]:=Gadget(NIL,140,125,90,8,GADGHCOMP,STRINGCENTER+RELVERIFY,
  338.                  STRGADGET,NIL,NIL,NIL,0,^Textinfo22,22,NIL);
  339.  Textinfo22:=Stringinfo(^Buffer22,NIL,0,11,0,0,0,0,0,0,NIL,0,NIL);
  340.  Buffer22:='0 KB';
  341.  
  342.  stringumrandung(win,2,1,13,146,235,21);
  343.  zeichnetext(1,2,win,20,142,' Original: ');
  344.  zeichnetext(1,2,win,135,142,' Neue Größe: ');
  345.  gads[23]:=Gadget(NIL,30,155,70,8,GADGHCOMP,STRINGCENTER+RELVERIFY,
  346.                  STRGADGET,NIL,NIL,NIL,0,^Textinfo23,23,NIL);
  347.  Textinfo23:=Stringinfo(^Buffer23,NIL,0,11,0,0,0,0,0,0,NIL,0,NIL);
  348.  Buffer23:='0 KB';
  349.  gads[24]:=Gadget(NIL,140,155,90,8,GADGHCOMP,STRINGCENTER+RELVERIFY,
  350.                  STRGADGET,NIL,NIL,NIL,0,^Textinfo24,24,NIL);
  351.  Textinfo24:=Stringinfo(^Buffer24,NIL,0,11,0,0,0,0,0,0,NIL,0,NIL);
  352.  Buffer24:='0 KB';
  353.  
  354.  stringumrandung(win,2,1,257,117,124,21);
  355.  zeichnetext(1,2,win,263,113,' Gespart: ');
  356.  gads[25]:=Gadget(NIL,275,125,90,8,GADGHCOMP,STRINGCENTER+RELVERIFY,
  357.                  STRGADGET,NIL,NIL,NIL,0,^Textinfo25,25,NIL);
  358.  Textinfo25:=Stringinfo(^Buffer25,NIL,0,11,0,0,0,0,0,0,NIL,0,NIL);
  359.  Buffer25:='0 %';
  360.  
  361.  zeichnetext(0,1,win,288,153,'Starten');
  362.  gads[26]:=Gadget(NIL,256,145,127,23,GADGHCOMP,RELVERIFY,
  363.                  BOOLGADGET,NIL,NIL,NIL,0,NIL,26,NIL);
  364.  gbord(win,^gads[26]);
  365.  
  366.  ImageMapPtr1:=PTR(ALLOC_MEM(SizeOf(ImageFeld),2));
  367.  ImageMapPtr1^:=ImageFeld(%00000000000000100000000000000000,
  368.                      %00000000000000110000000000000000,
  369.                      %00000000000000011000000000000000,
  370.                      %00000000000000011000000000000000,
  371.                      %00000000000000011000000000000000,
  372.                      %00000000000000011000000000000000,
  373.                      %00000000000000011000000000000000,
  374.                      %00000000000000110000000000000000,
  375.                      %00011111111111100000000000000000,
  376.  
  377. { 2. Bitplane }      %00111111111111000000000000000000,
  378.                      %01100000000000000000000000000000,
  379.                      %11000000000000000000000000000000,
  380.                      %11000000000000000000000000000000,
  381.                      %11000000000000000000000000000000,
  382.                      %11000000000000000000000000000000,
  383.                      %11000000000000000000000000000000,
  384.                      %01100000000000000000000000000000,
  385.                      %00100000000000000000000000000000);
  386.  
  387.  ImageMapPtr2:=PTR(ALLOC_MEM(SizeOf(ImageFeld),2));
  388.  ImageMapPtr2^:=ImageFeld(%00111111111111000000000000000000,
  389.                      %01100000000000000000000000000000,
  390.                      %11000111111100000000000000000000,
  391.                      %11001111111110000000000000000000,
  392.                      %11001111111110000000000000000000,
  393.                      %11001111111110000000000000000000,
  394.                      %11000111111100000000000000000000,
  395.                      %01100000000000000000000000000000,
  396.                      %00100000000000000000000000000000,
  397.  
  398. { 2. Bitplane }      %00000000000000100000000000000000,
  399.                      %00000000000000110000000000000000,
  400.                      %00000111111100011000000000000000,
  401.                      %00001111111110011000000000000000,
  402.                      %00001111111110011000000000000000,
  403.                      %00001111111110011000000000000000,
  404.                      %00000111111100011000000000000000,
  405.                      %00000000000000110000000000000000,
  406.                      %00011111111111100000000000000000);
  407.  
  408. image1:=IMAGE(0,0,17,9,2,ImageMapPtr1,3,0,NIL);
  409. image2:=IMAGE(0,0,17,9,2,ImageMapPtr2,3,0,NIL);
  410. pfad1:=':';
  411. pfad2:=':';
  412. datei1:='';
  413. datei2:='';
  414.  
  415.  
  416. ende:=FALSE;
  417.  
  418. FOR lauf:=1 TO 26 DO ok:=ADDGADGET(Win,^gads[lauf],0);
  419.  
  420. REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  421. akt:=activategadget(^gads[2],win,NIL);
  422. REPEAT
  423.  MessagePtr1:=p_Intuimessage(Waitport(Win^.Userport));
  424.  MessagePtr1:=p_Intuimessage(GetMsg(Win^.Userport));
  425.  CASE MessagePtr1^.class OF
  426.   _CLOSEWINDOW: ende:=TRUE;
  427.   GADGETUP,GADGETDOWN:
  428.    BEGIN
  429.     aktgad:=messageptr1^.iaddress;
  430.     CASE aktgad^.gadgetID OF
  431.       1:p1;
  432.       2:;
  433.       3:p3;
  434.       4:;
  435.       5: BEGIN
  436.           gads[5].Flags:=SELFLAGS;
  437.           gads[6].Flags:=NORFLAGS;
  438.           gads[7].Flags:=NORFLAGS;
  439.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  440.          END;
  441.       6: BEGIN
  442.           gads[5].Flags:=NORFLAGS;
  443.           gads[6].Flags:=SELFLAGS;
  444.           gads[7].Flags:=NORFLAGS;
  445.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  446.          END;
  447.       7: BEGIN
  448.           gads[5].Flags:=NORFLAGS;
  449.           gads[6].Flags:=NORFLAGS;
  450.           gads[7].Flags:=SELFLAGS;
  451.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  452.          END;
  453.       8: BEGIN
  454.           gads[8].Flags:=SELFLAGS;
  455.           gads[9].Flags:=NORFLAGS;
  456.           gads[10].Flags:=NORFLAGS;
  457.           gads[11].Flags:=NORFLAGS;
  458.           gads[12].Flags:=NORFLAGS;
  459.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  460.          END;
  461.       9: BEGIN
  462.           gads[8].Flags:=NORFLAGS;
  463.           gads[9].Flags:=SELFLAGS;
  464.           gads[10].Flags:=NORFLAGS;
  465.           gads[11].Flags:=NORFLAGS;
  466.           gads[12].Flags:=NORFLAGS;
  467.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  468.          END;
  469.      10: BEGIN
  470.           gads[8].Flags:=NORFLAGS;
  471.           gads[9].Flags:=NORFLAGS;
  472.           gads[10].Flags:=SELFLAGS;
  473.           gads[11].Flags:=NORFLAGS;
  474.           gads[12].Flags:=NORFLAGS;
  475.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  476.          END;
  477.      11: BEGIN
  478.           gads[8].Flags:=NORFLAGS;
  479.           gads[9].Flags:=NORFLAGS;
  480.           gads[10].Flags:=NORFLAGS;
  481.           gads[11].Flags:=SELFLAGS;
  482.           gads[12].Flags:=NORFLAGS;
  483.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  484.          END;
  485.      12: BEGIN
  486.           gads[8].Flags:=NORFLAGS;
  487.           gads[9].Flags:=NORFLAGS;
  488.           gads[10].Flags:=NORFLAGS;
  489.           gads[11].Flags:=NORFLAGS;
  490.           gads[12].Flags:=SELFLAGS;
  491.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  492.          END;
  493.      13: BEGIN
  494.          END;
  495.      14: BEGIN
  496.           gads[14].Flags:=SELFLAGS;
  497.           gads[15].Flags:=NORFLAGS;
  498.           gads[16].Flags:=NORFLAGS;
  499.           gads[17].Flags:=NORFLAGS;
  500.           gads[18].Flags:=NORFLAGS;
  501.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  502.          END;
  503.      15: BEGIN
  504.           gads[14].Flags:=NORFLAGS;
  505.           gads[15].Flags:=SELFLAGS;
  506.           gads[16].Flags:=NORFLAGS;
  507.           gads[17].Flags:=NORFLAGS;
  508.           gads[18].Flags:=NORFLAGS;
  509.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  510.          END;
  511.      16: BEGIN
  512.           gads[14].Flags:=NORFLAGS;
  513.           gads[15].Flags:=NORFLAGS;
  514.           gads[16].Flags:=SELFLAGS;
  515.           gads[17].Flags:=NORFLAGS;
  516.           gads[18].Flags:=NORFLAGS;
  517.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  518.          END;
  519.      17: BEGIN
  520.           gads[14].Flags:=NORFLAGS;
  521.           gads[15].Flags:=NORFLAGS;
  522.           gads[16].Flags:=NORFLAGS;
  523.           gads[17].Flags:=SELFLAGS;
  524.           gads[18].Flags:=NORFLAGS;
  525.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  526.          END;
  527.      18: BEGIN
  528.           gads[14].Flags:=NORFLAGS;
  529.           gads[15].Flags:=NORFLAGS;
  530.           gads[16].Flags:=NORFLAGS;
  531.           gads[17].Flags:=NORFLAGS;
  532.           gads[18].Flags:=SELFLAGS;
  533.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  534.          END;
  535.      19: BEGIN
  536.           gads[19].Flags:=SELFLAGS;
  537.           gads[20].Flags:=NORFLAGS;
  538.           gads[21].Flags:=NORFLAGS;
  539.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  540.          END;
  541.      20: BEGIN
  542.           gads[19].Flags:=NORFLAGS;
  543.           gads[20].Flags:=SELFLAGS;
  544.           gads[21].Flags:=NORFLAGS;
  545.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  546.          END;
  547.      21: BEGIN
  548.           gads[19].Flags:=NORFLAGS;
  549.           gads[20].Flags:=NORFLAGS;
  550.           gads[21].Flags:=SELFLAGS;
  551.           REFRESHGADGETS(Win^.firstgadget,Win,NIL);
  552.          END;
  553.      22,23,24,25:;
  554.      26:p26;
  555.      END;
  556.    END;
  557.   OTHERWISE;
  558.  END;             {OF CASE}
  559.  ReplyMsg(p_Message(MessagePtr1));
  560. UNTIL ende;
  561. Closewindow(Win);
  562. Free_Mem(LONG(ImageMapPtr1),SizeOf(ImageFeld));
  563. Free_Mem(LONG(ImageMapPtr2),SizeOf(ImageFeld));
  564. END.
  565.  
  566.